#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int Maxn=110;
int n,m,Q;
vector<int>e[Maxn];
int dis[Maxn][Maxn];

int x[Maxn],y[Maxn],p[Maxn];
int c[Maxn],d[Maxn];
int f[Maxn];
bool vis[Maxn];

void dfs(int u,int now,int l){
    vis[now]=1;
    dis[u][now]=l;
    for(auto v:e[now]){
        if(vis[v]) continue;
        dfs(u,v,l+1);
    }
}

int main(){
    freopen("shu.in","r",stdin);
    freopen("shu.out","w",stdout);
    scanf("%d%d%d",&n,&m,&Q);

    for(int i=1;i<n;i++){
        int u,v;
        scanf("%d%d",&u,&v);
        e[u].emplace_back(v);
        e[v].emplace_back(u);
    }
    for(int i=1;i<=Q;i++){
        scanf("%d%d%d",&x[i],&y[i],&p[i]);
    }
    for(int i=1;i<=m;i++){
        scanf("%d%d",&c[i],&d[i]);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++) vis[j]=0;
        dfs(i,i,0);
    }
    for(int t=1;t<=Q;t++){
        for(int i=1;i<=n;i++) f[i]=0;
        int u=x[t];
        f[u]=p[t];
        for(int i=1;i<=n;i++) f[i]=f[u]-dis[u][i];
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                int now=c[j];
                if(f[now]<0) continue;
                for(int k=1;k<=n;k++)
                    f[k]=max(f[k],d[j]-dis[now][k]);
            }
        }
        printf("%s\n",f[y[t]]<0?"NO":"YES");
        // cout<<"hel "<<f[y[t]]<<endl;
    }


    return 0;
}